package 尚硅谷.juc.test8;

import java.util.concurrent.TimeUnit;

public class Test8 {

    /**
     * 基本类型传值：传的是复印件，形参改变，实参不受影响
     * 传递的是真实值
     */
    public void changeValue1(int age){
        age=30;
    }

    /**
     *引用类型传值：引用类型传值传的是地址值，实参和形参共同指向一个地址
     *            形参改变实参也会变
     *传递的是地址值
     */
    public void changeValue2(Person person) throws InterruptedException {
        person.setName("xxx");
    }

    /**
     * string类型传值：string比较特殊,string存在常量池中
     *              每次创建一个string对象的时候都会在常量池中创建一个新的对象
     *
     */
    public void changeValue3(String str){
        str="yyy";
        System.out.println(str.hashCode());
    }

    public static void main(String[] args) throws InterruptedException {
        Test8 test8=new Test8();
        int age=20;
        test8.changeValue1(age);
        System.out.println("age的值："+age);

        System.out.println("------------------------------------------------");

        Person person=new Person("abc");
        test8.changeValue2(person);
        System.out.println("person的值："+person.toString());

        System.out.println("------------------------------------------------");
        String str="abc";
        test8.changeValue3(str);
//        System.out.println("str的值："+str);
        System.out.println(str.hashCode());

    }
}
